package com.woniu.controller;

import com.woniu.constant.Constant;
import com.woniu.entity.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * 通用的控制层
 *  - 文件的上传
 *  - 文件的下载
 *  - 导入导出
 * @author tarnett
 */
@RestController
@RequestMapping("/common")
@Slf4j
@Api(tags = "通用的控制器")
@CrossOrigin
public class CommonController {

    @Value("${woniu.baseUrl}")
    private String baseUrl;
    @Value("${woniu.fileUploadDir}")
    private String fileUploadDir;

    @ApiOperation("文件上传")
    @PostMapping("/upload")
    public Result upload(@RequestPart MultipartFile file) throws IOException {
        // 1. 对文件进行校验（大小，类型）
        String oldFilename = file.getOriginalFilename();
        String type = oldFilename.substring(oldFilename.lastIndexOf("."));
        if(!Constant.FILE_TYPE.contains(type)){
            return Result.error("图片类型不符合要求");
        }
        // 2. 自定义文件的名称
        String uuid = UUID.randomUUID().toString();
        String newFilename = uuid + type;
        // 3. 将上传的文件保存到本地
        File localFile = new File(fileUploadDir + newFilename);
        file.transferTo(localFile);
        // 4. 返回文件的访问地址
        return Result.ok(baseUrl + "up/" + newFilename);
    }

}
